Field of the Invention
The present invention relates to the field of distributed computing and more particularly to maintaining distributed state consistency in a distributed computing application.
Description of the Related Art
Distributed computing refers to the use of multiple different computing hosts, each with processor and memory, coupled to one another over a computer communications network, arranged to achieve a common goal. Distributed computing programs are the program logic hosted by the different computing hosts and configured to provide the program code that when executed cooperatively with one another, produces a common result. Classic examples of distributed computing programs include banking systems managing banking transactions between banking institutions, real estate transactional systems managing the purchase and sales of real estate between buyer and seller as facilitated by respective brokers, and the like. Component based applications represent one type of distributed computing program utilizing resilient, communicative object oriented technologies in order to effectively implement a distributed computing application.
Conventionally, ensuring the accurate of completion of a transaction in a distributed computing application necessitated computing protocols such as the venerable two-phase commit. In transaction processing, as well as in database management, and computer networking, the two-phase commit protocol, also known as “2PC”, is a type of atomic commitment protocol. Specifically, 2PC is a distributed algorithm that coordinates the determination by the processes participating in a distributed atomic transaction as to committing or aborting (rolling back) the transaction. The 2PC protocol focuses on recovery from failure and achieves its goal through the use of a centrally maintained transactions log.
The two phases of 2PC include the commit-request phase and the commit phase. In the former phase, a coordinator process attempts to prepare participating processes in a transaction to take the necessary steps for either committing or aborting the transaction. In the latter phase, the coordinator solicits votes from the processes as to whether or not to commit or abort a subject transaction. The decision by the coordinator to commit or to abort the transaction then is communicated by the coordinator to the participating processes, who in turn can commit or abort individually as the case may be.
In the course of processing a transaction, a distributed computing application must maintain a distributed state reflected by the individual states of different distributed components forming the distributed computing application. In this regard, maintaining an accurate picture of the state of each distributed component in a distributed computing application can be integral to the successful completion of a transaction performed amongst the distributed components. The failure to maintain knowledge of the state of each component can result in a failed transaction utilizing out-dated state information thus requiring the rollback of the entire transaction.
Though 2PC has proven effective in the context of error recovery, so much cannot be said of state consistency management. In this regard, while 2PC has proven to be an important approach to error recovery in a distributed system, the success of 2PC is not without consequence. Specifically, the maintenance of a central error recovery log in 2PC, though effective during error recovery, adds substantial processing overhead outside of error recovery. Accordingly, while 2PC provides an algorithm that otherwise would be useful in ensuring consistency of state amongst different distributed processes, the overhead requisite to maintaining a centralized error recovery log, but not requisite to ensuring state consistency is not acceptable.